Skip to content

iOS 定位修改 · 小白保姆级教程(Shadowrocket 小火箭)

本教程教你用 Shadowrocket(小火箭) 把 iPhone 的定位改到世界任何地方,无需越狱、无需电脑、无需开发者账号。跟着一步步做即可。改完后可以使用上苹果的满血地图和外版设备iOS27的苹果AI

原理一句话:iPhone 靠周围 Wi-Fi、基站问苹果服务器"我在哪",本模块在苹果回坐标的半路上把坐标改成你指定的地方,iPhone 就以为自己在那里。


开始前你需要

  • 一台 iPhone/iPad
  • Shadowrocket(小火箭)App(App Store 付费应用,需先买好装好)
  • 能正常联网

此方法适用于包括 iOS 27 beta 在内的各系统版本。改坐标后按第六步"关开定位、多试几次"即可生效。


第一步:导入模块

  1. 打开 Shadowrocket

  2. 底部点 「配置」

  3. 找到 「模块」,点右上角 「+」1

  4. 「来自 URL」,粘贴下面这个地址(需要科学上网):

    https://raw.githubusercontent.com/mekos2772/ios-location-spoofer/main/ios-location-spoofer.sgmodule
  5. 保存。回到模块列表,确认这条 「iOS Location Spoofer」前面是勾选/启用状态(右侧有个 ✓)

✅ 模块导入完成。


第二步:打开 HTTPS 解密

  1. 进入 「HTTPS 解密」 页面。不同 Shadowrocket 版本入口可能不同:

    • Shadowrocket iOS 2.2.88(3308) 实测路径:底部点 「配置」 → 找到当前正在使用的配置文件 → 点右侧 「ⓘ」 → 进 「HTTPS 解密」
    • 旧版 / 部分界面:底部点 「设置」 → 进 「HTTPS 解密」

    如果在「设置」里找不到「HTTPS 解密」,不代表没有这个功能,优先按第一条从配置文件右侧「ⓘ」进入。

  2. 「HTTPS 解密」 开关打开(变蓝)

    注意:有的版本这里只有一个开关,那是正常的,它本身就是中间人解密。旧教程截图里多出的"HTTP/2 MitM"开关是可选项,没有不影响。

  3. 看中间的 「域名」 列表,确认包含这四个(导入模块后通常会自动出现):

    gs-loc.apple.com,
    gs-loc-cn.apple.com,
    bluedot.is.autonavi.com,
    bluedot.is.autonavi.com.gds.alibabadns.com

    如果没有,点绿色 「+」,把上面这串用逗号分隔粘进去,再点右上角 ✓ 保存

✅ 解密开关和域名就绪。


第三步:安装并信任证书(最关键,别漏)

这一步分三个小步骤,少一步定位就改不了。

3.1 生成并安装证书

  1. 还在 HTTPS 解密页面,点 「证书」
  2. 「生成 CA 证书」 → 再点 「安装证书」 → 点 「确认」
  3. 弹出"已下载描述文件"对话框,点 「允许」

注意:必须点 「生成 CA 证书」不是「生成新的 CA 证书」),否则不会出现下载描述文件弹窗,后续所有步骤都看不到 Shadowrocket 描述文件及证书。证书装好后,「生成 CA 证书」选项会消失。

3.2 去系统里安装描述文件

  1. 打开 iPhone 设置 App
  2. 设置 → 通用 → VPN 与设备管理
  3. 找到 Shadowrocket 的描述文件 → 点进去 → 点 「安装」(输入锁屏密码)

3.3 信任证书 ⚠️(90% 的人漏这步)

  1. 设置 → 通用 → 关于本机 → 证书信任设置
  2. Shadowrocket 那个证书的开关打开(启用完全信任)

✅ 三步都做完,解密才能真正工作。


第四步:开启代理

  1. 回到 Shadowrocket 首页
  2. 把顶部的总开关打开(显示"已连接")
  3. 第一次会弹"是否允许添加 VPN 配置",点 允许

✅ 代理已开启,上方状态栏会出现 VPN 图标。


第五步:设置你想去的坐标

默认定位是苹果总部(美国库比提诺)。改成你想要的地点:

  1. Shadowrocket → 配置 → 模块 → 点开 「iOS Location Spoofer」
  2. 找到 argument= 那一行,改里面这两个数字:
    • latitude= → 你的纬度
    • longitude= → 你的经度
  3. 保存

几个常用坐标可直接抄:

地点latitude(纬度)longitude(经度)
北京天安门39.9087116.3975
上海外滩31.2397121.4900
广州塔23.1066113.3245
东京塔35.6586139.7454

怎么查任意地点的坐标:用电脑或手机打开 Google 地图 / 高德地图,找到目标位置,右键或长按 → 复制坐标,会得到两个数字。顺序是 纬度在前、经度在后

顺手把海拔等参数也调一下(建议,别只改经纬度)

argument= 里除了经纬度,还有几个参数一起构成"完整的一次定位"。只改经纬度、海拔却停在默认的 530 米,跑到上海(近海平面)或拉萨(3600 米)时就会明显对不上、容易露馅。建议按目标地点顺手调一下:

参数默认值含义建议
altitude530海拔(米),支持负数改成目标地点的真实海拔(下面教你查)。上海≈4、北京≈44、拉萨≈3650、吐鲁番可为负
horizontalAccuracy39水平精度(米),越小越"精准"想更像 GPS 可设 5~15;保持 39 也正常
verticalAccuracy1000垂直精度(米)配了真实海拔后可调小到 10~30,让海拔显得更可信

怎么查目标地点海拔:浏览器搜"地名 海拔",或用高德/Google 地图;也可以打开这个免费接口直接看(把经纬度换成你的):

https://api.open-meteo.com/v1/elevation?latitude=31.2397&longitude=121.4900

返回里的 elevation 就是海拔(米)。

改法和经纬度一样:在 argument= 那行找到对应参数改数字,保存即可。其余参数(motionActivityType 等运动状态)一般不用动。


第六步:让定位生效

改完坐标不会立刻生效,需要"逼" iPhone 重新向苹果请求定位。方法很简单:

  1. 打开 设置 → 隐私与安全性 → 定位服务
  2. 整个关掉,等 10 秒以上,再打开
  3. 打开 地图天气 App 查看定位
  4. 没变就重复关/开定位几次,多试几遍就会生效

苹果对定位有缓存,需要重新发请求才会被拦截修改,所以有时要多关开几次、多试几遍才命中。生效后通常会稳定保持,不用一直关开。

补充触发技巧:还可以彻底杀掉地图/天气 App 再重开,或用 Apple 自带「地图」点右下角定位箭头强制重新定位。


进阶(可选):用网页地图选点,告别手动改参数

前面第五步是手动去模块里改 latitude / longitude / altitude 数字——偶尔换一次没问题,但经常换、还要每次查海拔就很烦

项目自带一个网页地图选点工具location-picker/server.js),把这些全自动化了:

  • 手指点地图哪里,定位就到哪里,不用手查经纬度
  • 海拔按地形自动获取(点哪自动填哪的真实海拔),不用自己查
  • 水平精度 / 垂直精度在网页上直接调,点「保存」即可
  • 支持高德 / 卫星 / 国外地图切换,自动处理国内地图偏移
  • 搜索地名能列出多个候选,像真地图一样选
  • 一键"恢复真实定位":不用去关模块,网页点一下就让脚本放行、回到真实位置(再点一下恢复伪造)

用它需要什么

  • 一台能长期运行的服务器 / VPS / NAS(用来跑这个小工具)
  • 有一点点动手能力(会用 SSH、systemd)

如果你没有服务器、只是偶尔改一次定位 → 不用装这个,按第五步手动改数字就够了。 如果你经常换地方、想"点地图就搞定" → 值得装。

怎么装

  1. 把项目里的 location-picker/server.js 上传到你的服务器运行(文件开头的注释写了启动命令,支持自带 https 复用已有证书)
  2. 在 Shadowrocket 模块的 argument= 末尾追加(前面的参数都保留):
    &configUrl=https://你的域名:端口/loc.json?token=你的密码
  3. 之后改定位就是:打开网页 → 点地图 → 按第六步关开定位生效

详细部署步骤(systemd 常驻、证书、端口、Cloudflare 等)都写在 location-picker/server.js 文件顶部的注释里,跟着做即可。

配置环境变量(必读)

server.js 通过环境变量控制,TOKEN 不设进程会直接退出,不会用弱口令兜底——这是防呆设计,避免你部署完忘了改默认密码被人扫。

变量是否必设默认值说明
TOKEN必设网页端和模块 configUrl 里的 token= 必须一致。建议 openssl rand -hex 24 生成
PORT8080监听端口;1024 以下需 root
CERTHTTPS 证书 fullchain 路径;与 KEY 同时设置才走 https
KEYHTTPS 私钥路径;与 CERT 同时设置才走 https

启动示例:

bash
# http(先跑通流程,再用 https)
TOKEN=$(openssl rand -hex 24) PORT=8080 node server.js

# https(复用 acme.sh 证书,续期无需重启,进程每 12 小时自动热加载)
TOKEN=$(openssl rand -hex 24) PORT=8443 \
CERT=/root/cert/example.com/fullchain.pem \
KEY=/root/cert/example.com/privkey.pem \
node server.js

然后模块 argument= 末尾的 configUrl 写成:

&configUrl=https://example.com:8443/loc.json?token=上面那个TOKEN

⚠️ URL 末尾必须带 ?token=<TOKEN>,且这个 TOKEN 必须和服务器启动时环境变量 TOKEN 的值完全一致。否则:

  • 没带 ?token= → 服务端返回 401 missing token
  • ?token= 写错 → 服务端返回 403 bad token

同样的规则适用于浏览器访问 //set/enable 端点。

数据文件 loc.json 自动落在 server.js 同目录,记录当前坐标 / 海拔 / 精度;已写入 .gitignore,不会污染仓库。

⚠️ 不要把 TOKEN 直接写在命令行里——推荐用 systemd 的 Environment=.env + direnv,避免 historyps aux 泄露出去。

⚠️ iPhone 的 Shadowrocket 第一次访问 configUrl 时会弹一次"是否信任证书",点信任。


常见问题排查

Q:定位一直不变? 按这个顺序查:

  1. 证书信任设置里的开关有没有真的打开(第 3.3 步,最常见原因)
  2. 模块是不是在「模块」里且已启用(右侧有 ✓)
  3. HTTPS 解密开关是否打开、四个苹果域名是否都在
  4. 有没有多试几次关/开定位(苹果有缓存,往往要重复几遍才生效)
  5. 把模块 argument= 里的 debug=false 改成 debug=true,去 Shadowrocket「数据/日志」看有没有拦截到 wloc 请求——能看到说明拦截成功

Q:模块导入后域名没自动出现? 手动在 HTTPS 解密页面把那四个域名加进去,记得点右上角 ✓ 保存。

Q:找不到「HTTPS 解密」入口? 如果你使用的是 Shadowrocket iOS 2.2.88(3308),实测入口在「配置」页中:找到当前正在使用的配置文件,点击右侧「ⓘ」,再进入「HTTPS 解密」。旧版或部分界面可能仍在底部「设置」里。

Q:可以恢复真实定位吗? 可以。关掉模块(取消 ✓)或关掉 Shadowrocket 总开关,然后按第六步刷新一次定位即可恢复。

Q:Apple News / 依赖区域的服务还是判定我在原位置? Apple News 等部分应用不只读定位,还依赖 iOS 系统服务的多个开关。请打开 设置 → 隐私与安全性 → 定位服务 → 系统服务,把里面所有开关全部打开(特别是「基于位置的 Apple 广告」「重要地点」「iPhone 分析」「路由与流量」「提升地图准确性」等)。全部打开后再关开一次定位,Apple News 通常就能识别到新区域了。


操作顺序速查

导入模块 → 开HTTPS解密+加域名 → 装证书并信任 → 开代理 → 改坐标保存
→ 关定位等10秒再开(没变就多试几次) → 打开地图验证

祝配置顺利。卡在哪一步,对照上面"常见问题排查"逐条检查即可。

最近更新